import copy
from common.read_xmind import ReadXmind
from common.test_data import TestData

test_data = TestData()


class DeleteFunction:

    def __init__(self, xmind_path, sheet_name):
        self.xmind_data = ReadXmind(path=xmind_path, sheet=sheet_name).processed_data()
        self.result = []

    def generate_case_details(self, model_data, case_title, level, step, result_text):
        """生成用例详情"""
        template_data = copy.deepcopy(model_data)
        template_data['用例标题'] = case_title
        template_data['步骤'] = [step]
        template_data['结果'] = [result_text]
        template_data['用例等级'] = level
        template_data['用例标题'] = case_title
        template_data['用例等级'] = 'P1'
        del template_data['需求']
        self.result.append(template_data)

    def generate_case(self, model_data):
        """
        生成用例
        :param model_data: 模块数据
        :return:
        """
        # 确认删除弹窗
        """只生产取消按钮用例"""
        # 判断多选条件
        if model_data['需求']['支持多条删除'] == '是':
            case_title = "{},选择多条数据进行删除，点击取消".format(model_data['用例标题'])
            self.generate_case_details(model_data, case_title, "P1", '选择多条数据进行删除，点击取消', '数据未删除')
        case_title = "{},选择多一条数据进行删除，点击取消".format(model_data['用例标题'])
        self.generate_case_details(model_data, case_title, "P1", '选择一条数据进行删除，点击取消', '数据未删除')
        # 判断关联性
        if model_data['需求']['关联'] == '否':
            case_title = "{},选择一条数据进行删除，刷新页面后该数据是否还存在".format(model_data['用例标题'])
            self.generate_case_details(model_data, case_title, "P1", '选择一条数据进行删除', '刷新页面后该数据不存在')
            # 判断多选条件
            if model_data['需求']['支持多条删除'] == '是':
                case_title = "{},选择多条数据进行删除，刷新页面后数据是否还存在".format(model_data['用例标题'])
                self.generate_case_details(model_data, case_title, "P1", '选择多条数据进行删除', '刷新页面后该数据不存在')
        else:
            case_title = "{},选择一条数据进行删除，给予相应提示".format(model_data['用例标题'])
            self.generate_case_details(model_data, case_title, "P1", '选择一条数据进行删除', '给予相应提示')
            case_title = "{},取消关联后，选择一条数据进行删除，刷新页面后该数据是否还存在".format(model_data['用例标题'])
            self.generate_case_details(model_data, case_title, "P1", '取消关联后，选择一条数据进行删除', '刷新页面后该数据不存在')
            # 判断多选条件
            if model_data['需求']['支持多条删除'] == '是':
                case_title = "{},选择多条数据进行删除，给予相应提示".format(model_data['用例标题'])
                self.generate_case_details(model_data, case_title, "P1", '选择多条数据进行删除', '给予相应提示')
                case_title = "{},取消关联后，选择多条数据进行删除，刷新页面后该数据是否还存在".format(model_data['用例标题'])
                self.generate_case_details(model_data, case_title, "P1", '取消关联后，选择多条数据进行删除', '刷新页面后数据不存在')

    def case(self):
        for model in self.xmind_data:
            # 循环模块
            if model['标签'] == '删除':
                self.generate_case(model)
        return self.result


def result(xmind_path, sheet):
    return DeleteFunction(xmind_path=xmind_path, sheet_name=sheet).case()
